home *** CD-ROM | disk | FTP | other *** search
- This is a proposal for an extension of Atari's ARGV argument passing scheme
- standard. It has been discussed on the MiNT mailing list. Please note
- that this proposal should not yet be regarded as an "official" Atari
- standard; however, according to Atari's Eric Smith, it's unlikely that
- Atari's new standard will differ a lot from the one proposed here.
-
- *
-
- This ARGV standard extension adds the possibility of passing blank (i.e.,
- zero length) arguments via the command line when calling another program.
-
- The ARGV extended argument passing scheme standard should be extented by
- the following clauses:
-
- If the command line does _not_ contain blank arguments, the old ARGV
- standard applies; there are no additions. This is for maximal
- backwards compatibility with old (unaware) applications.
-
- _If_ (and only if) there are blank arguments, they're substituted by
- single spaces in the argv[] representation in the environment and
- by the string "''" (two single quotes) in the basepage's command
- line representation. Their position in argv[] is signaled thru the
- value of the "ARGV=" environment variable (which was reserved by
- Atari's earlier standard for future usage). This value consists of
- the string "NULL:", followed by a comma-separated list of decimal-
- encoded indexes to the positions of the blank arguments in the
- argv[] vector.
-
- Example: The following command:
- foo bar '' '' blah '' frob
- results in the following being appended to the child's environment:
- "ARGV=NULL:2,3,5\0foo\0bar\0 \0 \0blah\0 \0frob\0\0"
- The basepage contains the following string at offset 0x80:
- "\177bar '' '' blah '' frob\0"
-
- A program which is aware of the new standard will notice the magic word
- "NULL" in ARGV's value and will decode the argv[] indexes it signals.
-
- A program which is not aware of the new standard, but which is aware
- of Atari's old ARGV standard will see spaces in place of blank
- arguments. The spaces have been introduced to guarantee that
- the parameters stay on their positions.
-
- Non-ARGV-aware programs (those which read their command line from their
- basepage) should see the parameters in the right place too.. Of course,
- a space can't be inserted in place of an blank argument because spaces
- separate words in the basepage's command line, which is why the single
- quotes have been introduced.
-
- Those programs that use the value of ARGV= for other purposes (Mark
- Williams C compiled programs) will conform/work as long as they're not
- passed blank args. If someone tries to pass blank args to them from an
- aware shell, these programs will lose. However, these programs would
- also lose in this case if the (new) standard wouldn't exist (because
- blank arguments are impossible resp. truncate the ARGV parameters in the
- environment), so this is not really a problem.
-